home *** CD-ROM | disk | FTP | other *** search
/ Amiga News 95 / Amiga News 95.iso / dpat / dpat18 / aush_v1.52 / aush.doc < prev    next >
Text File  |  1992-02-22  |  42KB  |  911 lines

  1.  
  2.                AUSH - Manuel de référence
  3.  
  4.  
  5.  
  6.  
  7.  
  8.   1. Avertissement
  9.  
  10.       Ce manuel décrit la version  1.52  de  l'interpréteur  de  commandes
  11.   AUSH. Ce  programme  est  (c)1992  par  Denis  GOUNELLE,  toute  utilisation
  12.   commerciale ou vente sans autorisation  écrite  est  strictement  interdite.
  13.   Vous pouvez copier et diffuser ce programme aux conditions suivantes :
  14.  
  15.     - l'ensemble des fichiers doit être fourni
  16.     - aucun fichier ne doit avoir été modifié
  17.     - vous ne devez pas demander plus de 40FF pour cela
  18.  
  19.       Malgré de nombreux tests, je ne peux garantir  qu'AUSH  ne  contient
  20.   aucune erreur. VOUS UTILISEZ CE PROGRAMME A VOS RISQUES  ET  PERILS.    Je  ne
  21.   pourrai en aucun cas être  tenu  responsable    de  tout  dommage,  direct  ou
  22.   indirect, résultant de l'utilisation d'AUSH.
  23.  
  24.   2. Introduction
  25.  
  26.       AUSH (Amiga Ultimate SHell) est  un  interpréteur  de  commande  (ou
  27.   "shell") écrit pour l'Amiga, et destiné à remplacer entièrement le shell  de
  28.   Commodore. Il s'inspire de tous les shells que j'ai utilisé jusqu'ici, aussi
  29.   bien sous UNIX (sh, csh, et surtout tcsh 6.00.03) que sur Amiga (AShell  1.3
  30.   et Csh 4.01A), tout en intégrant de  nombreuses  idées  personnelles    et  en
  31.   gardant la plus grande compatibilité possible avec les shells  Commodore  et
  32.   ARP.
  33.  
  34.       Vous êtes invités à me donner votre avis (critiques et  suggestions)
  35.   sur ce programme, en m'écrivant à l'adresse suivante :
  36.  
  37.                    M. GOUNELLE Denis
  38.                     Boite 71
  39.                   6, rue des cailloux
  40.                  92110 CLICHY - FRANCE
  41.  
  42.       L'éditeur de ligne de commande a été écrit à partir de celui de  Csh
  43.   v4.02A (par Mattew DILLON/Steve DREW/Carlo BORREO & Cesare DIENI).
  44.       Merci à Pierre ARDICHVILI, Jean-Yves PROUX, Jean-Philippe  RAPP,  et
  45.   Michel SCHINZ pour leurs tests et leurs suggestions. Merci également à Josef
  46.   EGLOFF pour la traduction des messages d'erreur en allemand.
  47.  
  48.   3. Installation
  49.  
  50.       Si votre Amiga dispose du système 1.3, vous devez d'abord  installer
  51.   la librairie ARP, si ce n'est déjà fait, en copiant le fichier "arp.library"
  52.   dans le répertoire "LIBS:".
  53.       Copiez ensuite les fichiers "AUSH" (le shell lui-même) et  "NewAUSH"
  54.   (commande pour lancer un nouveau shell) dans le répertoire "C:".  Notez  que
  55.   AUSH et NewAUSH sont écrits en code ré-entrant, et peuvent donc parfaitement
  56.   être rendus résidents.
  57.  
  58.   4. La commande NewAUSH
  59.  
  60.       Cette commande est l'équivalent des commandes "NewCLI" et "NewShell"
  61.   du shell de Commodore. Elle ne fonctionnera que si le  programme  "AUSH"  se
  62.   trouve dans le chemin d'accès défini par la commande "Path". Pour lancer  un
  63.   nouveau shell, depuis la ligne de commande, tapez :
  64.  
  65.                NewAUSH [spécification de fenêtre]
  66.  
  67.             exemple : NewAUSH CON:0/11/640/180/AUSH
  68.  
  69.       Pour lancer un nouveau shell depuis le WorkBench, créez une icône de
  70.   type "Project". Indiquez éventuellement une taille de pile  (champ  "STACK")
  71.   et  une  spécification  de  fenêtre  (champ  "TOOL  TYPE",  sous  la   forme
  72.   "WINDOW=spécification"). N'oubliez pas de mettre le chemin d'accès à NewAUSH
  73.   dans le champ "DEFAULT TOOL".
  74.  
  75.   5. Notions de base
  76.  
  77.       Lorsque vous    lancez    AUSH,  un  message  indiquant  la  version  du
  78.   programme apparait, suivit d'une chaine d'invite (ou "prompt"). Par  défaut,
  79.   cette chaine indique le numéro du shell, suivit du  répertoire  courant.  Le
  80.   shell attend alors vos commandes.
  81.  
  82.       Une commande simple  est  une  suite    de  mots  séparés  par    un  ou
  83.   plusieurs espaces. Le premier mot indique la commande  à  exécuter,  et  les
  84.   autres sont les arguments à passer à cette commande. Sous  système  1.3,  la
  85.   longueur maximale d'une ligne de commande est de 256 caractères dans le  cas
  86.   d'une commande externe.
  87.       Si  le  premier  mot    correspond  à  un   alias,   la   substitution
  88.   correspondante est effectuée. Cela continue tant que c'est possible, ce  qui
  89.   veut dire qu'un alias  peut  être  défini  en  fonction  d'un  autre.  Notez
  90.   cependant qu'il n'y a pas de contrôle de récursivité des  définitions.  Vous
  91.   pouvez désactiver la substitution des alias en  ajoutant  le    caractère  "\"
  92.   devant le nom de la commande (par exemple "\ls df0:")
  93.       AUSH examine également les arguments, et remplace  certains  d'entre
  94.   eux en fonction des règles suivantes :
  95.  
  96.       ;       tout ce qui suit est un commentaire, et est ignoré.
  97.       ^car      remplacé par "CTRL-car" si "car"  est  une  lettre,  par
  98.           "car" sinon.
  99.       =n      remplacé par le  n-ième  répertoire  dans  la  pile  des
  100.           répertoires.
  101.       $var      remplacé par la valeur de la    variable  "var"  (cherchée
  102.           d'abord  dans  les  variables  locales,  puis  dans  les
  103.           variables  globales,    et  enfin   dans   les     variables
  104.           ARP/Commodore et Manx) ou par une chaine vide  si  cette
  105.           variable n'est pas définie.
  106.           Le nom de la variable peut être indiqué entre  accolades
  107.           afin de le séparer de la suite  :  si  vous  voulez  par
  108.           exemple afficher le contenu de la variable "var"  suivit
  109.           du  mot  "coucou",   il   vous   faudra   écrire   "echo
  110.           ${var}coucou" et non "echo $varcoucou".
  111.           Le nom de la variable peut  éventuellement  être  suivit
  112.           d'un nom de fonction. Cette fonction sera  appliquée  au
  113.           contenu de la variable (si la variable est définie) lors
  114.           de la substitution. Notez que  le  contenu  réel  de    la
  115.           variable ne sera pas modifié. Les fonctions  disponibles
  116.           sont :
  117.  
  118.           lower   converti en minuscules
  119.           upper   converti en majuscules
  120.           first   extrait le premier caractère
  121.           slead   supprime espaces et tabulations en tête
  122.           len      calcule la longueur
  123.  
  124.           La syntaxe à respecter est la forme "var:fonction",  par
  125.           exemple "$config:lower" ou "${config:lower}".
  126.       motif      remplacé par le nom de tous les fichiers  correspondant.
  127.           Un  motif   est   un     mot   contenant   au    moins    un
  128.           méta-caractères,  soit  ARP  (sous  système  1.3)   soit
  129.           AmigaDOS (sous système 2.0). Notez que  la  plupart  des
  130.           commandes (list,  copy,  ...)  étendent  elles-même  les
  131.           motifs, et que dans ce cas  il  vous    faudra    mettre    le
  132.           motif entre quotes  (par  exemple  "list  '#?.o'")  pour
  133.           éviter des conflits.
  134.       {expr}      remplacé par la valeur de l'expression (voir la  syntaxe
  135.           plus loin).
  136.       !!      remplacé par la dernière commande dans l'historique.
  137.       !n      remplacé par la commande numéro "n" dans l'historique.
  138.       !chaine      remplacé par la dernière commande commençant par
  139.           "chaine" dans l'historique.
  140.       `cmd`       remplacé par la première ligne produite en sortie par la
  141.           commande indiquée. Les espaces  en  tête  sont  éliminés
  142.           avant remplacement, la ligne est considéré comme un seul
  143.           argument et n'est pas ré-interprété.
  144.           Exemple : la commande "set toto `type config`" copie  le
  145.           contenu de la première ligne du fichier "config" dans la
  146.           variable locale "toto".
  147.       \car      copie le caractère indiqué sans l'interpréter.
  148.       'chaine'    copie la chaine sans interprétation (à part de la  forme
  149.           "\car").
  150.       "chaine"    copie la chaine sans interprétation, à part  des  formes
  151.           "^car", "=n",  "$var",  "{expr}"  et  "\car".  De  plus,
  152.           l'extension des motifs n'est pas désactivée.
  153.  
  154.       AUSH est également capable de rediriger l'entrée ou la sortie  d'une
  155.   commande : au lieu de se faire sur la fenêtre courante, elle se fera sur  le
  156.   fichier indiqué. La syntaxe à respecter est la suivante :
  157.  
  158.       >nom      redirection de la  sortie  vers  le  fichier    "nom".  Le
  159.           fichier est écrasé s'il existe déjà, créé sinon.
  160.       >>nom      redirection de la  sortie  vers  le  fichier    "nom".  La
  161.           sortie est ajoutée à la  fin    du  fichier  s'il  existe,
  162.           sinon le fichier est créé.
  163.       <nom      redirection de l'entrée depuis le fichier "nom".
  164.  
  165.       La spécification de ces redirections peut se faire n'importe où  sur
  166.   la ligne de commande. Il peut y avoir un  ou    plusieurs  espaces  entre  les
  167.   caractères  de  redirection  et  le  nom  de    fichier  (comme  par   exemple
  168.   "list > maliste").
  169.  
  170.       Une commande complexe est composée d'au moins deux commandes simples
  171.   enchainées par une des formes suivantes :
  172.  
  173.       cmd1|cmd2|...   exécution  successive  de  commandes  simples,  avec
  174.               "pipes" (la  sortie  de  la  commande  à  gauche  du
  175.               caractère "|"  est  utilisée  comme  entrée  par  la
  176.               commande indiquée à droite), tant que le code retour
  177.               est nul.
  178.       cmd1,cmd2,...   exécution successive de commandes, tant que le  code
  179.               retour est nul. Vous pouvez spécifier des  commandes
  180.               simples, mais aussi des enchainements par pipes (par
  181.               exemple "cd ram: , list | wc , delete toto").
  182.  
  183.       Le code retour d'une commande complexe  est  celui  de  la  dernière
  184.   commande simple exécutée. Seule la dernière commande simple  d'une  commande
  185.   complexe peut être lancée en arrière plan.
  186.  
  187.       Une fois l'analyse de la ligne  de  commande  terminée,  AUSH  lance
  188.   l'exécution de la commande correspondante. La recherche se fait d'abord dans
  189.   la liste des commandes internes au shell, puis dans la liste    des  commandes
  190.   résidentes, et enfin dans les répertoires  indiqués  à  l'aide  la  commande
  191.   "Path". Une fois la commande lancée, AUSH attend la fin  de  son  exécution,
  192.   met à jour certaines variables (comme celle indiquant le code retour  de  la
  193.   dernière commande exécutée) puis affiche de nouveau la chaine d'invite.
  194.       Vous pouvez demander une exécution en arrière plan, c'est-à-dire que
  195.   AUSH n'attendra pas la fin de la commande. Il vous faudra alors spécifier le
  196.   caractère "&" sur la ligne de commande (par exemple "list >maliste  &").  Le
  197.   shell affichera alors le numéro de  processus  de  cette  commande  puis  le
  198.   prompt ré-apparaitra immédiatement.
  199.       Par défaut, les commandes héritent de la  priorité  du  shell,  mais
  200.   AUSH vous permet de modifier temporairement cette priorité. Ainsi,  si  vous
  201.   tapez une ligne de la forme "cmd @n", la  commande  indiquée  sera  exécutée
  202.   avec la priorité "n" (par exemple "list @-3" lancera la commande "list" avec
  203.   la priorité -3). Ceci ne marchera cependant pas pour les commandes internes.
  204.   De même, lors du lancement en arrière plan,  vous  pouvez  faire  suivre  le
  205.   caractère "&" par la priorité à donner à la  commande.  Par  exemple,  "list
  206.   >maliste &5" lancera la commande "list" en arrière plan, avec la priorité 5.
  207.       Notez que les spécifications    "&"  et  "@"  peuvent  être  indiquées
  208.   n'importe où sur la ligne de commande.
  209.  
  210.   6. Les variables
  211.  
  212.       AUSH vous permet de définir des variables, comme dans un langage  de
  213.   programmation classique. Les caractères autorisés pour les noms de variables
  214.   sont les lettres minuscules et majuscules, les  chiffres,  et  le  caractère
  215.   souligné.  Notez   que   minuscules    et   majuscules   sont     différenciées
  216.   (contrairement  aux  noms  de  fichiers).  Ces  variables  peuvent  contenir
  217.   n'importe quelle valeur, aussi bien numérique que alphanumérique.
  218.       Les  variables  globales  sont  accessibles  à  tous     les   niveaux
  219.   d'exécution, c'est-à-dire  aussi  bien  en  mode  interactif  que  dans  les
  220.   fichiers de commandes. Elles ne  peuvent  être  détruites.  Notez  qu'il  ne
  221.   s'agit pas des variables au  sens  ARP  ou  Commodore.  Elles  ne  sont  pas
  222.   partagées par plusieurs shells.
  223.       Une variables locale n'est accessible que dans le niveau d'exécution
  224.   où elle a été définie pour la  première  fois.  Lors    du  retour  au    niveau
  225.   précédent, les variables locales sont détruites automatiquement.
  226.       Certaines variables permettent de contrôler et de  paramètrer  AUSH.
  227.   Ces variables sont décrites plus loin.
  228.  
  229.   7. Expressions
  230.  
  231.       AUSH peut évaluer des expressions entières,  exprimées  en  notation
  232.   polonaise inversée postfixée. Vous pouvez utiliser des variables locales  ou
  233.   globales dans ces expressions, si leurs  valeurs  sont  numériques.  Il  est
  234.   possible d'indiquer des nombres hexadécimaux (précédés par "0x", par exemple
  235.   "0x13e"). Par défaut le résultat est en  décimal.  Les  opérateurs  reconnus
  236.   sont :
  237.  
  238.       +      addition
  239.       -      soustraction
  240.       *      multiplication
  241.       /      division
  242.       %      modulo (reste de la division entière)
  243.       <      décalage à gauche
  244.       >      décalage à droite
  245.       &      et
  246.       |      ou
  247.       sx      dépile le sommet de pile dans le registre x
  248.       lx      empile le contenu du registre x
  249.       HEX      affiche le résultat en hexadécimal
  250.  
  251.       Il y a dix registres (désignés par un chiffre de 0 à 9)  initialisés
  252.   à zéro au  démarrage    du  shell.  Ils  conservent  leur  valeur  entre  deux
  253.   évaluations d'expression. Les nombres et les opérateurs doivent être séparés
  254.   par au moins un espace, sauf le - unaire (négation).
  255.  
  256.   Exemples :
  257.  
  258.       echo { 34 3 / 4 + } => 15
  259.       echo { 7 3 - }      => 4
  260.       echo { 10 -2 + }    => 8
  261.  
  262.       set cpt 3
  263.       echo { $cpt 2 * }   => 6
  264.       set cpt { $cpt 1 + }
  265.       echo $cpt          => 4
  266.  
  267.   8. Les fichiers de commandes
  268.  
  269.       Vous pouvez regrouper plusieurs commandes dans  un  fichier,    et  le
  270.   faire exécuter par AUSH comme un programme quelconque. Tout ce passera alors
  271.   comme si vous aviez tapé cette suite de commandes au clavier, à part sur  le
  272.   plan des variables locales.
  273.       Dans un fichier de commandes, la variable locale "argc"  indique  le
  274.   nombre d'arguments reçus. AUSH  positionne  également  des  pseudo-variables
  275.   locales (elles n'apparaissent pas dans la liste des variables données par la
  276.   commande "set", et ne peuvent être modifiées) : la variable "0" contient  le
  277.   nom du fichier de commandes,    les  variables    "1",  "2",...  les  différents
  278.   arguments, et la variable "*" la liste des  arguments  (à  partir  de  "$1")
  279.   séparés par un espace.
  280.       Chaque  fois    que  vous  lancez  AUSH,  le  fichier    de   commandes
  281.   "S:.aushrc" est exécuté (s'il existe). L'argument optionnel  "FROM  fichier"
  282.   permet d'exécuter le fichier de commandes  indiqué  plutôt  que  le  fichier
  283.   "S:.aushrc".
  284.  
  285.   9. Gestion de l'historique
  286.  
  287.       AUSH peut mémoriser vos commandes, et vous permettre de les rappeler
  288.   par la suite. Le  mécanisme  d'historique,  qui  ne  fonctionne  qu'en  mode
  289.   interactif, est contrôlé par la variable "history" (qui indique le nombre de
  290.   commandes à conserver). La  commande    "history"  (décrite  plus  loin)  vous
  291.   permet de voir le contenu de l'historique.
  292.  
  293.       La variable "savehist" indique le nombre de commandes sauvées  entre
  294.   chaque exécution d'un shell. Ce fichier (généré lors de  la  terminaison  du
  295.   shell) est automatiquement chargé lors du démarrage, et les commandes  qu'il
  296.   contient sont copiées dans l'historique. La variable  "histfile"  peut  être
  297.   définie, pour indiquer le nom  du  fichier  de  sauvegarde.  Par  défaut  ce
  298.   fichier est "S:.history".
  299.  
  300.   10. Edition de la ligne de commandes
  301.  
  302.       Ce mécanisme permet de se passer du gestionnaire de console  NewCON.
  303.   Il est activé en affectant la valeur "1"  à  la  variable  "lineedit".  Vous
  304.   pouvez alors utiliser les  touches  suivantes  pour  éditer  vos  lignes  de
  305.   commande :
  306.  
  307.     gauche         caractère précédent.
  308.     droite         caractère suivant.
  309.     shift-gauche mot précédent.
  310.     shift-droit  mot suivant.
  311.     shift-haut   dernière commande commençant par la ligne courante.
  312.     haut         commande précédente dans l'historique.
  313.     bas         commande suivante dans l'historique.
  314.     ^A         va en début de ligne.
  315.     ^B         caractère précédent.
  316.     ^E         va en fin de ligne.
  317.     ^F         caractère suivant.
  318.     ^K         efface la fin de ligne.
  319.     ^L         ré-affiche la ligne.
  320.     ^N         commande suivante dans l'historique.
  321.     ^P         commande précédente dans l'historique.
  322.     ^S         échange les deux caractères précédents.
  323.     ^T         première commande dans l'historique.
  324.     ^W         efface la fin du mot.
  325.     ^X         efface la ligne.
  326.     ^Z         dernière commande dans l'historique.
  327.     RETURN         exécute la commande, après sauvegarde dans l'historique.
  328.     ESC         annule la commande, après sauvegarde dans l'historique.
  329.  
  330.     ^V         le mot précédent est considéré comme un nom de variable
  331.              et est remplacé par la valeur de cette variable.
  332.              Exemple : echo version<^V> => echo 1.10.
  333.     TAB         complète le nom de fichier ou de variable.
  334.              Exemple :     cd ram:
  335.                  list Cl<TAB>  => list ClipBoards/
  336.                  echo $hi<TAB> => echo $history
  337.              S'il y a plusieurs possibilités, AUSH complète le plus
  338.              loin possible et affiche la liste des possibilités.
  339.              Pour compléter un nom de fichier, AUSH lui ajoute le
  340.              contenu de la variable "filepat" et étend le motif
  341.              ainsi obtenue.
  342.     ^D         affiche la liste des possibilités pour compléter le
  343.              nom de fichier ou de variable (sans modifier la ligne
  344.              de commande).
  345.  
  346.     HELP         appelle la requête de fichier. Si vous choisissez un
  347.              fichier, son nom sera ajouté dans la ligne de commande.
  348.  
  349.     f1 à f10     remplacé par la valeur des variables "f1" à "f10", ou
  350.              "F1" à "F10" si shifté.
  351.  
  352.   Toutes les touches de contrôle peuvent  être    redéfinies,  à    l'aide  de  la
  353.   variable spéciale "keys" (voir plus loin).
  354.  
  355.   IMPORTANT: il arrive de temps  en  temps  que  l'éditeur  se  bloque  et  ne
  356.   réagisse plus à ce que vous tapez au clavier. Dans  ce  cas,    il  suffit  en
  357.   général de taper "|" (SHIFT-\) pour le débloquer.
  358.  
  359.   11. Gestion des répertoires
  360.  
  361.       Si vous définissez l'alias "dircmd", cet alias sera  exécuté  chaque
  362.   fois que vous taperez un nom de  répertoire  comme  nom  de  commande  (sans
  363.   argument, redirection, pipe, ni  lancement  en  arrière-plan).  Par  exemple
  364.   "alias dircmd cd" vous permet d'avoir un "cd" implicite : taper le nom  d'un
  365.   répertoire suffit pour y aller. Vous pouvez également définir un alias  plus
  366.   complexe, comme "alias dircmd 'cd [] , list FILES QUICK'".
  367.  
  368.       AUSH peut gérer une pile de répertoire (64  entrées).  L'ajout  d'un
  369.   répertoire ce fait à l'aide la commande  interne  "pushd",  le  retrait  par
  370.   "popd", et l'affichage du contenu de la pile par "dirs" (ces commandes  sont
  371.   décrites plus loin).
  372.       Vous pouvez utiliser cette pile dans vos  commandes  avec  la  forme
  373.   "=n", où "n" est le numéro d'un répertoire dans  la  pile  (indiqué  par  la
  374.   commande "dirs").
  375.  
  376.   12. Commandes internes
  377.  
  378.       Ce chapitre décrit  toutes  les  commandes  internes    de  AUSH.  Ces
  379.   commandes ne peuvent    être  lancées  en  arrière  plan  mais    acceptent  les
  380.   redirections en entrée et en sortie. Elles retournent 0  (RETURN_OK)  ou  20
  381.   (RETURN_FAIL) suivant le cas.
  382.       Lors de l'affichage de la valeur d'une variable  par  les  commandes
  383.   "setvar" ou "set", les attributs  de  cette  variable  sont  affichés  entre
  384.   parenthèses ("x" pour exportable, "r" pour lecture seulement).
  385.  
  386.       alias
  387.       Affiche la liste des alias et leurs définitions.
  388.  
  389.       alias nom
  390.       Affiche la définition de l'alias indiqué.
  391.  
  392.       alias nom 'chaine'
  393.       Défini un alias "nom" de valeur "chaine".  Dans  la  chaine,  le
  394.       symbole  "[]"  indique  où  placer  les  arguments  lors  de  la
  395.       substitution de l'alias. Notez que la chaine  DOIT  être  placée
  396.       entre quotes simples.
  397.  
  398.       cd [rep]
  399.       Sans argument affiche le nom du répertoire courant, sinon  "rep"
  400.       devient le répertoire courant.
  401.  
  402.       dirs
  403.       Affiche le contenu de la pile des répertoires.
  404.  
  405.       echo [-c] [args...]
  406.       Affiche les arguments sur la sortie standard, suivis d'un retour
  407.       chariot sauf si vous indiquez l'option "-c".
  408.  
  409.       eval
  410.       Passe en mode évaluation : toute ligne en  entrée  est  analysée
  411.       comme une expression (voir syntaxe plus  haut)  et  le  résultat
  412.       affiché. Pour sortir de ce mode, tapez "x"  tout  seul  sur  une
  413.       ligne.
  414.  
  415.       exit [code]
  416.       Retourne au niveau d'exécution précédent, avec  le  code  retour
  417.       indiqué (0 par défaut). En mode interactif, termine le shell.
  418.  
  419.       export vars...
  420.       Marque les variables locales indiquées comme "exportables".  Ces
  421.       variables deviennent alors lisibles, modifiables et détruisibles
  422.       dans    les  fichiers  de  commandes  lancés  depuis   le   niveau
  423.       d'exécution courant.
  424.  
  425.       for var in val1 val2... valn
  426.       ...
  427.       done
  428.       Effectue une    boucle.  La  variable  "var"  (locale)  prend  les
  429.       valeurs indiquées dans  la  liste,  et  pour    chaque    valeur    la
  430.       séquence d'instruction entre le "for" et le "done" est  exécutée
  431.       une fois. Après le "done",  la  variable  contient  la  dernière
  432.       valeur  pour    laquelle  la  boucle  a  été  effectuée.  En  mode
  433.       interactif, le prompt devient  celui    indiqué  par  la  variable
  434.       "prompt3", entre le "for" et le "done".
  435.       Vous pouvez également utiliser la forme  "for  var  in  val1  ..
  436.       val2", qui effectue la boucle pour chaque valeur comprise  entre
  437.       les nombres "val1" et "val2" inclus. Si  le  nombre  "val2"  est
  438.       inférieur au nombre "val1", la boucle est effectué avec  un  pas
  439.       de -1. Les nombres "val1" et "val2" peuvent être négatifs.
  440.  
  441.       history [str]
  442.       Donne la liste des commandes    présentes  dans  l'historique.  Si
  443.       vous indiquez un argument "str",  l'affichage  sera  limité  aux
  444.       commandes commençant par la chaine de caractères"str".
  445.  
  446.       if [NOT] condition
  447.       ....
  448.       [else
  449.       ....]
  450.       endif
  451.       Exécution  conditionnelle.  En  mode    "interactif",  la   chaine
  452.       d'invite devient celle indiquée par la variable "prompt2".
  453.       La condition peut être :
  454.  
  455.           -d nom      vrai si "nom" est un répertoire (1)
  456.           -e nom      vrai si "nom" existe (1)
  457.           -f nom      vrai si "nom" est un fichier (1)
  458.           -o nom nom2 vrai si "nom1" et "nom2" existent et que
  459.               "nom" est plus ancien que "nom2" (1)
  460.           -s nom      vrai si "nom" est un fichier non vide (1)
  461.           str = str   vrai si les deux chaines sont identiques
  462.           str == str  vrai si les deux chaines sont identiques
  463.               (sans différencier majuscules et minuscules)
  464.           n1 LT n2      vrai si n1 est inférieur n2
  465.           n1 EQ n2      vrai si n1 est égal à n2
  466.           n1 GT n2      vrai si n1 est supérieur n2
  467.           n1 LE n2      vrai si n1 est inférieur ou égal à n2
  468.           n1 NE n2      vrai si n1 est différent de n2
  469.           n1 GE n2      vrai si n1 est supérieur ou égal à n2
  470.  
  471.       Le mot-clé "NOT" avant une  condition  permet  d'inverser  cette
  472.       condition. Jusqu'à 16 commandes "if" peuvent être imbriquées.
  473.  
  474.       (1) Si la lettre après  le  tiret  est  en  majuscule  (exemple:
  475.           "-D"), le test échouera sans requêtes de l'AmigaDOS  en  cas
  476.           de volume absent, lecteur de disquette vide, etc...
  477.  
  478.       jobs
  479.       Affiche la liste des processus lancés en arrière plan.
  480.  
  481.       loadhist
  482.       Force le chargement immédiat du fichier  contenant  l'historique
  483.       des commandes. Cette commande peut être utile si vous changez la
  484.       valeur de la variable "histfile" et que vous voulez  prendre  en
  485.       compte le nouveau fichier.
  486.  
  487.       popd [nb]
  488.       Sans arguments dépile le dernier répertoire empilé et en fait le
  489.       répertoire courant, sinon tronque la pile  des  répertoires  aux
  490.       "nb" premiers répertoires ("popd 0" vide complètement la  pile).
  491.  
  492.       pushd rep
  493.       Empile le répertoire courant, puis fait de "rep"  le  répertoire
  494.       courant.
  495.  
  496.       read [-f] var
  497.       Affecte à la variable locale indiquée une ligne lue sur l'entrée
  498.       standard.  Retourne  RETURN_FAIL  en    cas  de  fin  de  fichier.
  499.       L'option -f permet d'interdire la saisie d'une chaine vide.
  500.  
  501.       readonly vars...
  502.       Empêche toute modification ou destruction des variables (locales
  503.       ou globales) indiquées. Cette opération est irréversible.
  504.  
  505.       set
  506.       Affiche la liste des variables locales, ainsi que leur  valeurs.
  507.  
  508.       set var
  509.       Affiche la valeur de la variable locale "var".
  510.  
  511.       set var val
  512.       Affecte la valeur "val" à la variable locale "var". La  variable
  513.       est créée si elle n'existe pas encore.
  514.  
  515.       setvar
  516.       Affiche la liste des variables globales, ainsi que leur valeurs.
  517.  
  518.       setvar var
  519.       Affiche la valeur de la variable globale "var".
  520.  
  521.       setvar var val
  522.       Affecte la valeur "val" à la variable globale "var". La variable
  523.       est créée si elle n'existe pas encore.
  524.  
  525.       shift
  526.       Décale  les  arguments  d'un   fichier   de   commandes   :   la
  527.       pseudo-variable  "1"  reçoit  le  contenu  de   "2",   puis   la
  528.       pseudo-variable "2" celui de "3", etc... La variable  "argc"  et
  529.       la pseudo-variable "*" sont mises à jour.
  530.  
  531.       source fichier
  532.       Exécute le fichier de commandes indiqué. Si  vous  redirigez    la
  533.       sortie de cette commande, la redirection concernera  toutes  les
  534.       commandes du fichier.
  535.  
  536.       stop [code]
  537.       Interrompt l'exécution de la boucle "for...done" courante,  avec
  538.       le code retour indiqué (0 par défaut).
  539.  
  540.       time <commande>
  541.       Lance l'exécution de la commande indiquée, puis affiche la durée
  542.       (en secondes) d'exécution de cette commande. Peut  être  utilisé
  543.       pour toutes les commandes, y compris les commandes  internes    et
  544.       les commandes lancées en arrière plan.
  545.  
  546.       unalias noms...
  547.       Détruit les alias indiqués.
  548.  
  549.       unset vars...
  550.       Détruit les variables locales indiquées.
  551.  
  552.       writehist
  553.       Force une sauvegarde immédiate de l'historique.  Cette  commande
  554.       peut être utilisée par exemple avant de lancer un programme  qui
  555.       risque de "planter" votre Amiga.
  556.  
  557.   13. Variables spéciales
  558.  
  559.       Les variables suivantes permettent de  contrôler  et    de  paramétrer
  560.   AUSH. Sauf dans le cas où une valeur initiale est indiquée,  elles  ne  sont
  561.   pas définies au démarrage. Il est recommandé de les définir comme  variables
  562.   globales (c'est d'ailleurs ce que fait AUSH pour celles qui ont  une  valeur
  563.   initiale) ou éventuellement comme variables Commodore/ARP.
  564.  
  565.       cmdnum      numéro de commande, de la forme "_ShellNumber_CmdNumber"
  566.           (garanti différent pour chaque commande exécutée).
  567.       cwd      nom du répertoire courant.
  568.       debug      si vaut "1", trace les  commandes  exécutées  (avant  et
  569.           après première interprétation, utile    pour  la  mise    au
  570.           point des fichiers de commandes).
  571.       delim      caractères délimiteurs de mots pour les  fonctions  "mot
  572.           suivant", "mot précédent" et "efface la fin du  mot"  de
  573.           l'éditeur de la ligne de commande.
  574.           Valeur initiale : " :/".
  575.       filepat      chaine ajoutée au mot en cours pour compléter les nom de
  576.           fichiers.
  577.           Valeur initiale : "#?".
  578.       fullhist      si  vaut  "1",  sauvegarde  toutes  les  commandes  dans
  579.           l'historique, sinon ne sauvegarde pas deux fois de suite
  580.           la même commande.
  581.       histfile      nom du fichier de sauvegarde de l'historique entre  deux
  582.           sessions.  Si  cette     variable   n'est   pas   définie,
  583.           l'historique est sauvegardé dans "S:.history".
  584.       histmin      longueur minimale que doit avoir une commande pour  être
  585.           conservée dans l'historique.
  586.           Valeur initiale : 3.
  587.       history      nombre de commandes conservées dans l'historique (si non
  588.           défini ou inférieur à 1, seule la dernière commande  est
  589.           sauvée).
  590.           Valeur initiale : 50.
  591.       insert      si vaut "1", l'édition de la ligne de commande  se  fait
  592.           en mode "insertion" (mode "remplacement" sinon).
  593.           Valeur initiale : 1.
  594.       ioerror      code d'erreur positionné par la dernière commande  ayant
  595.           échoué (pour l'instant ne marche que pour les  commandes
  596.           internes).
  597.           Valeur initiale : 0.
  598.       keys      indique comment  gérer  les  touches    de  contrôle  sous
  599.           l'éditeur de lignes de  commande.  La  valeur  de  cette
  600.           variable doit être une  chaine  de  lettres  minuscules,
  601.           chaque lettre indiquant la touche de    contrôle  appelant
  602.           une des fonctions de l'éditeur. C'est la position de  la
  603.           lettre  dans    la  chaine  qui  détermine   la   fonction
  604.           appelée :
  605.  
  606.               position 1  va en début de ligne
  607.               position 2  caractère précédent
  608.               position 3  liste des compléments
  609.               position 4  va en fin de ligne
  610.               position 5  caractère suivant
  611.               position 6  efface fin de ligne
  612.               position 7  re-affiche la ligne
  613.               position 8  ligne suivante
  614.               position 9  ligne précédente
  615.               position 10 échange deux caractères
  616.               position 11 va au début de l'historique
  617.               position 12 remplace variable
  618.               position 13 efface fin de mot
  619.               position 14 efface ligne
  620.               position 15 va à la fin de l'historique
  621.  
  622.           Par exemple, si la quatrième lettre est un "o",  l'appui
  623.           sur la touche ^o déplacera le curseur en fin    de  ligne.
  624.           Dans la redéfinition des touches à utiliser, veuillez ne
  625.           pas spécifier les touches de contrôle ^h, ^i, ^j, et ^m,
  626.           car ces touches sont gérées spécialement.
  627.           Valeur initiale : "abdefklnpstvwxz".
  628.       language      langue des messages  d'erreurs.  Les  valeurs  reconnues
  629.           sont "english" et "deutsch". Pour toute autre valeur, ou
  630.           si cette variable n'est pas définie, les messages seront
  631.           en français.
  632.       lineedit      si vaut "1", active l'édition de la ligne de commande.
  633.       noexpand      si vaut "1", désactive l'extension des  méta-caractères.
  634.       path      indique le chemin de recherche des commandes à exécuter,
  635.           sous la forme d'une liste de noms de répertoires séparés
  636.           par  un  caractère  ";".  Pour  désigner  le  répertoire
  637.           courant, indiquez "." comme nom  de  répertoire.  Si  un
  638.           fichier  avec  le  bit  "s"  est  trouvé,  une  commande
  639.           "source" est lancée automatiquement sur ce fichier.
  640.           Exemple : setvar path 'ram:;.;c:;sys:utilities'
  641.       prompt      chaine d'invite, interprétée comme suit :
  642.  
  643.               %h      numéro dans l'historique
  644.               %#      numéro du shell
  645.               %i      niveau d'imbrication des "if"
  646.               %l      niveau d'imbrication de boucle
  647.               %c      nom du répertoire courant (variable "cwd")
  648.               %s      dernier code retour (variable "status")
  649.               %Vnom   valeur de la variable "nom".
  650.               %T      heure (HH:MM:SS)
  651.               %d      jour du mois (1-31)
  652.               %D      jour de la semaine (Mon-Sun)
  653.               %m      mois (1-12)
  654.               %M      nom du mois (Jan-Dec)
  655.               %y      année (1900-1999)
  656.               %C      caractère CSI (0x9B)
  657.               %N      caractère retour chariot
  658.               %f      taille de mémoire FAST libre
  659.               %v      taille de mémoire CHIP libre
  660.               %a      taille de mémoire libre (CHIP+FAST)
  661.  
  662.           Valeur initiale : "%C0;33;40m< %# - %c >%C0;31;40m ".
  663.       prompt2      idem que "prompt", mais utilisé entre "if" et "endif".
  664.           Valeur initiale : "%i> ".
  665.       prompt3      idem que "prompt", mais utilisé entre "for" et "done".
  666.           Valeur initiale : "%l) ".
  667.  
  668.       NOTE : en l'absence de définition, "> " est utilisé comme prompt.
  669.  
  670.       savehist      nombre de commandes sauvées entre chaque session (si non
  671.           défini ou inférieur à 1 rien n'est sauvé).
  672.       status      code retour de la dernière commande exécutée.
  673.       titlebar      idem que "prompt", mais pour  le  titre  de  la  fenêtre
  674.           shell.
  675.       trap      commande(s)  à  exécuter  lors  de  l'interruption  d'un
  676.           fichier de commandes ou d'une  boucle  "for...done"  par
  677.           l'appui sur CTRL-C ou CTRL-D. Contrairement  aux  autres
  678.           variables spéciales, il est conseillé de  définir  cette
  679.           variable localement (commande  "set",  permet  à  chaque
  680.           fichier de commandes de la modifier en fonction  de  ses
  681.           besoins). Il    est  également    conseillé  d'indiquer  une
  682.           commande "exit" comme dernière commande (exemple  :  set
  683.           trap 'delete $tmpfile ,  exit  20'),  sinon  l'exécution
  684.           reprendra au point où elle en était  (pour  ignorer  les
  685.           interruptions : set trap ';'). Si cette  variable  n'est
  686.           pas définie, l'exécution est arrêtée avec un code retour
  687.           de 20.
  688.       version      numéro de version de AUSH.
  689.  
  690.   14. Notes
  691.  
  692.       Sauf si vous lui affectez une pile de plus de 4000 octets  AVANT  de
  693.   le lancer, AUSH ne pourra exécuter  plus  d'une  quinzaine  de  fichiers  de
  694.   commandes et/ou de boucles imbriquées (vous obtiendrez le message "pas assez
  695.   de place dans la pile !").
  696.       Si le nom indiqué pour les redirections en sortie  est  "TTY"  (i.e.
  697.   ">TTY" ou ">>TTY"), la redirection se fait vers la fenêtre  du  shell.  Cela
  698.   peut être utile dans un fichier de commandes, pour afficher un message alors
  699.   que la sortie de toutes les commandes a été redirigée vers un fichier.
  700.       Les pipes sont gérés à l'aide de fichiers temporaires créés dans  le
  701.   répertoire "T:", les tentatives  d'utilisation  de  "PIPE:"  et  "FIFO:"  se
  702.   soldant pour l'instant par un Gourou dès que plus  de  deux  commandes  sont
  703.   enchainées. Le répertoire  "T:"  est  également  utilisé  pour  stocker  des
  704.   fichiers temporaires lors des substitutions de commandes et  de  l'exécution
  705.   des boucles "for...done".
  706.       La forme "cmd  &"  correspond  à  la  forme  "run  cmd"  des  shells
  707.   Commodore et ARP. Notez que AUSH attend  la  fin  de    toutes    les  commandes
  708.   lancées en arrière plan avant de terminer. La commande "jobs" vous permettra
  709.   de savoir quelles sont ces commandes.
  710.       Sous système 2.04, AUSH n'est  pas  capable  de  récupérer  le  code
  711.   retour d'une commande lancée en arrière plan.
  712.  
  713.   15. Historique
  714.  
  715.     v1.00   28-Feb-92, 29564 octets
  716.         o Première version diffusée.
  717.  
  718.     v1.10   28-Mar-92, 31828 octets
  719.         o Cherche les variables également dans les variables ARP/Commodore
  720.           et Manx.
  721.         o La touche "^D" affiche les possibilités pour compléter le nom de
  722.           fichier ou de variable, les touches "^B",  "^F",  "^N"  et  "^P"
  723.           font la même chose que "gauche", "droite", "bas" et "haut".
  724.         o L'éditeur de ligne de commande efface le curseur  pendant  qu'il
  725.           exécute une commande (affichage plus rapide).
  726.         o La requête de fichier récupère le mot en cours pour  initialiser
  727.           le répertoire initial de la requête.
  728.         o Remet à zéro les signaux SIGBREAKF en  retour  de  l'éditeur  de
  729.           ligne de commandes (car ils sont positionnés si on  utilise  ^D,
  730.           ^E, ou ^F).
  731.         o Les  formes  "!!",  "!n"  et  "!chaine"  peuvent  être  indiquée
  732.           n'importe où sur la ligne de commande.
  733.         o Ajout des formes -D, -E, et -F à la commande "if".
  734.         o Ajout de la forme "for var in val1 ..  val2"  pour  la  commande
  735.           "for...done".
  736.         o Ajout de l'alias "dircmd".
  737.         o Ajoute un espace après une définition d'alias sans arguments (si
  738.           on faisait "alias ls dir" puis "ls ram:"  on  avait  un  message
  739.           "Please insert volume dirram: in any drive").
  740.         o Messages d'erreur en allemand si  la  variable  "language"  vaut
  741.           "deutsch".
  742.         o Commande "setenv" renommée en "setvar" (plus de conflits avec la
  743.           commande de Commodore), ajout de la commande "echo".
  744.         o Ajout des variables  "version"  et  "path",  variable  "ioerror"
  745.           initialisée à "0", variable "insert" initialisée à "1", variable
  746.           "autocd" supprimée.
  747.  
  748.     v1.11   29-Mar-92, 31832 octets
  749.         o La commande "echo" tient compte des redirections en sorties
  750.  
  751.     v1.12   11-Apr-92, 32244 octets
  752.         o Charge l'historique après l'exécution de  "S:.aushrc",  afin  de
  753.           prendre en compte une éventuelle modification de la valeur de la
  754.           variable "history".
  755.         o Ajout des formes "NE", "LE", et "GE" à la commande "if".
  756.         o La forme "for i in val1 .. val2" accepte des nombres négatifs et
  757.           que "val2" soit inférieur à "val1".
  758.         o Plus de contrôle de la taille des arguments pour    les  commandes
  759.           internes.
  760.         o Ajout de la fonction "^V" à l'éditeur de ligne de commandes.
  761.  
  762.     v1.13   18-Apr-92, 32280 octets
  763.         o Lors de la recherche d'une commande  à  l'aide  de  la  variable
  764.           "path" vérifie que l'objet trouvé est bien un fichier (et non un
  765.           répertoire).
  766.  
  767.     v1.14   26-Apr-92, 32300 octets
  768.         o Deux erreurs  corrigées  dans  la  substitution  de  commande  :
  769.           n'éliminait  pas  le  "`"  final,  calcul  de  la  longueur  des
  770.           arguments incorrect.
  771.         o Une erreur corrigée dans le parser : interprétait quand même les
  772.           caractères "<>,;" s'ils étaient en première  position  dans  une
  773.           chaine entre quotes.
  774.         o Messages en allemands revus
  775.  
  776.     v1.15   01-May-92, 32364 octets
  777.         o Ajout de la variable "histfile".
  778.         o Deux erreurs  corrigées  dans  le  calcul  de  la  longueur  des
  779.           arguments : oubliait de compter les guillements ou  les  quotes,
  780.           et de prévoir un peu de place supplémentaire pour les  arguments
  781.           "splités".
  782.  
  783.     v1.16   11-May-92, 32404 octets
  784.         o commande "echo" revue  :  quand  on  met  l'option  -c  supprime
  785.           vraiment le '\n' final (i.e. ne le remplace pas par un espace)
  786.  
  787.     v1.20   16-May-92, 32568 octets
  788.         o ajout des commandes "loadhist" et "writehist"
  789.         o ajout de la forme "%Vnom" à la syntaxe du prompt
  790.         o modification du "parser" :  n'analyse  la  partie  droite  d'une
  791.           commande composée qu'après avoir exécuté la  partie  gauche,  et
  792.           donc :
  793.           - "cd ram: , delete *" donne  le  résultat  attendu  ("*"  était
  794.         étendu avant de faire le "cd")
  795.           - toutes les commandes simples peuvent être des  alias  (et  non
  796.         plus seulement la première)
  797.           - on peut écrire une boucle sur une seule ligne ("for i in 1  ..
  798.         50 , echo $i , done" ne  marchait  pas,  maintenant  même  "cd
  799.         ram: , for i in *.c , echo $i , compress  $i  ,  done  ,  echo
  800.         fini" fonctionne !)
  801.  
  802.     v1.21   17-May-92, 32912 octets
  803.         o ajout de la commande "time"
  804.  
  805.     v1.22   23-May-92, 32944 octets
  806.         o bug corrigé dans la gestion des boucles "for...done" :  lors  de
  807.           l'écriture des commandes dans le fichier temporaire, ne  forçait
  808.           pas une fin de ligne après chaque commande
  809.  
  810.     v1.23   01-Jun-92, 33328 octets
  811.         o Plusieurs bugs corrigés dans la gestion des boucles "for...done"
  812.           écrites sur une même ligne : "for i  in  1  ..  5,echo  $i,done"
  813.           marche, ainsi que "for i in 1 .. 5 , list | wc , done"
  814.         o Si trouve un fichier avec le bit "s" en cherchant  une  commande
  815.           dans  le    chemin    défini     par   la   variable   "path",   lance
  816.           automatiquement une commande "source" sur ce fichier.
  817.         o La touche "^S" échange les deux caractères précédant le curseur.
  818.         o Les touches "^D" et "<TAB>" sont utilisables  sans  préfixe,  et
  819.           donc en début de ligne ou après un espace.
  820.         o Bug corrigé dans    l'éditeur  de  ligne  de  commande:  après  un
  821.           "shift-haut", les touches "haut" et "bas" ne donnaient  pas  les
  822.           bonnes commandes.
  823.  
  824.     v1.30   14-Jun-92, 33932 octets
  825.         o Plusieurs  erreurs  détectées  par  "Enforcer"   et   "Mungwall"
  826.           corrigées.
  827.         o Bug corrigé dans la  commande  "shift"  :  ne  positionnait  pas
  828.           "argc" correctement.
  829.         o Reconnait "$*" (remplacé par la liste des arguments séparés  par
  830.           un espace).
  831.         o Ajout de l'option -f à la commande "read".
  832.         o La variable "argc" est en lecture seulement.
  833.         o Vérifie les noms de  variables  donnés  aux  commandes  internes
  834.           (interdit les pseudo-variables arguments).
  835.         o Les spécifications "&[pri]" et  "@pri"  peuvent  être  indiquées
  836.           n'importe où sur la ligne de commande.
  837.  
  838.     v1.40   26-Jun-92, 37764 octets
  839.         o Recompilé avec le SAS/C 5.10b (avec pragmas et optimisation)
  840.         o Peut être rendu résident (code "pure")
  841.         o Enorme bug corrigé dans la fonction strxcat()  (ne  sauvegardait
  842.           pas le registre a2)
  843.         o Nombreuses modifications pour mieux tenir compte de  la  version
  844.           du système, ainsi sous système 2.04 :
  845.         - n'a plus besoin de "arp.library"
  846.         - peut exécuter les programmes résidents/internes (ROM)
  847.         - la commande "Execute" peut être utilisée
  848.         o Modification de l'évaluateur d'expressions :
  849.           - on peut indiquer des valeurs en hexa (0x1FD)
  850.           - ajout des opérateurs "HEX", "<", ">", "&", et "|"
  851.         o Ajout de l'option "-o" à la commande "if"
  852.         o Bug corrigé dans la  commande  "if":  n'appelait  UnLock()  dans
  853.           certains cas d'erreur
  854.  
  855.     v1.41   30-Jun-92, 37864 octets
  856.         o Correction dans la recherche des commandes: ne cherche  plus  le
  857.           chemin si la commande est résidente
  858.  
  859.     v1.42   06-Jul-92, 37872 octets (Fish #706)
  860.         o Bug corrigé dans la gestion des boucles "for...done": "oubliait"
  861.           les redirections des commandes dans la boucle
  862.         o Ne fait plus  crier  "Enforcer"  quand  on  fait  "!string"  (ou
  863.           "shift-haut" dans l'éditeur de lignes de commandes) et qu'aucune
  864.           commande commençant par "string" ne se trouve dans  l'historique
  865.  
  866.     v1.50   21-Aug-92, 37736 octets
  867.         o Ajout de la variable globale  "keys"  (permet  de  modifier  les
  868.           fonctions des touches de contrôle sous l'éditeur  de  lignes  de
  869.           commande)
  870.         o Accepte l'argument "FROM file"
  871.         o Contrôles plus stricts au démarrage: proc->pr_CLI valide, pas de
  872.           lancement depuis le WB, etc...
  873.         o Bug corrigé dans    l'évaluation  des  expressions:  affichait  le
  874.           résultat en décimal même si on indiquait "HEX"
  875.         o Bug corrigé sous système 1.3: ne donnait pas le  chemin  complet
  876.           de la commande à la fonction qui lance l'exécution
  877.  
  878.     v1.51   01-Sep-92, 37804 octets
  879.         o Bug  corrigé  dans  la  recherche  du  chemin:  après  exécution
  880.           automatique  d'un  script  (bit  "s"  détecté)   les   commandes
  881.           suivantes étaient  parfois  considérées  elles-aussi  comme  des
  882.           scripts (et exécutées comme telles !!!)
  883.         o La commande "history str" n'affiche que les commandes commençant
  884.           par "str"
  885.         o La commande  "history"  teste  CTRL-C  lors  de  l'affichage  de
  886.           l'historique
  887.         o Affiche la commande retrouvée quand on utilise les formes  "!!",
  888.           "!n" ou "!str"
  889.         o Bug corrigé: quand on faisait un "cd volume:" la  variable  $cwd
  890.           n'avait pas de ':' à la fin (d'où problème par exemple quand  on
  891.           faisait "copy df0:toto $cwd")
  892.         o Bug corrigé dans le complément de nom  de  fichier:  distinguait
  893.           minuscules et majuscules
  894.  
  895.     v1.52   22-Sep-92, 40000 octets
  896.         o La forme ${nom de var} est acceptée (permet  par  exemple  "echo
  897.           ${var}coucou")
  898.         o Ajout des fonctions sur les variables (formes "$var:fonction" et
  899.           "${var:fonction}")
  900.         o Ajout du test "==" à la commande "if"
  901.         o Sous système 2.0, la longueur des arguments n'est plus limitée
  902.         o Bug corrigé: teste le bit "s" même si on donne le chemin complet
  903.           de la commande
  904.         o Quelques bugs corrigés dans la gestion des boucles  "for...done"
  905.         o La variable $cwd se termine maintenant  toujours    soit  par  ":"
  906.           soit par "/"
  907.         o Si aucun fichier ne correspond à un motif,  affiche  un  message
  908.           d'erreur et n'exécute pas la commande
  909.  
  910.  
  911.